package main

import (
	"fmt"
)

type MyInt int
type Addable interface {
	~int | int8 | int16 | int32 | int64 |
		uint | uint8 | uint16 | uint32 | uint64 | uintptr |
		float32 | float64 | complex64 | complex128 |
		string
}

type Name[T1 Addable, T2 any] struct {
	V1 T1
	V2 T2
}

func add[T Addable](a, b T) T {
	c := struct {
		Name string
	}{
		Name: "sdf",
	}
	fmt.Println(c)
	return a + b
}

func main() {
	//var a, b MyInt
	//a = 11
	//b = 22
	//fmt.Println(add(a, b))
	////
	////fmt.Println(add("foo", "bar"))
	//P("hello", "33")
	//P(11, 22)
	var a any
	var b interface{}
	b = 33
	a = 33
	r := Equal(a, b)
	fmt.Println(r)

}
func P[T any](a, b T) T {
	fmt.Println(a, b)
	return a
}

func A(a any) {
	fmt.Println(a)
}

func Equal(a, b any) bool {
	return a == b
}
